// pages/operatorUpload/operatorUpload.js
const http = require('../../api/http');
Page({
  data: {
    facilitiesList: [],
    selectFacilitiesList: [],// 选中的设施列表
    
    url: 'http://127.0.0.1:8080',
    phone: '',
    show: false,
    showlx: false,
    imageUrl: [], // 用于存储已上传的文件列表
    imageUrls: [], // 用于存储已上传的文件列表
    location: '',
    address: '',
    introduce: '', // 用于存储营地介绍的文本
    types: [],// 存储选中的类型
    campTypes: ['综合营地', '微型营地', '帐篷营地', '教育营地', '运动营地'],
    selectedCampType: '',
    checked: true,
    //步骤条
    steps: [
      {
        desc: '营地信息',
      },
      {
        desc: '服务设施',
      },
      {
        desc: '营地介绍',
      },
    ],
    active: 0,
    //营业时间
    showPopup: false,// 控制弹出层的显示和隐藏
    timeType: '', // 用于绑定van-field的值
    selecttimeType: '',
    // showbutton:true,
    options: [
      { name: '全年', value: 'all', checked: true },
      { name: '月份', value: 'month', checked: false }
    ],
    columns: [
      {
        values: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
        className: 'column1',
      },
      {
        values: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
        className: 'column2',
        defaultIndex: 2,
      }
    ],
    // selectedMonth1: '',
    // selectedMonth2: '',

  },
  catchTouchMove(e) {
    this.setData({
      active: e.detail.current
    });

  },
  //下一步
  nextStep(e) {
    const index = e.detail.index;
    console.log("active", this.data.active)
    this.setData({
      active: this.data.active + 1
    });
    this.data.phone = this.data.phone.replace(/\s+/g, "");
    if (!(/^1[3456789]\d{9}$/.test(this.data.phone))) {
      wx.showToast({
        title: '手机号格式错误',
        icon: 'none'
      })
      return
    }
    // 校验手机号
    let data = {
      phone: this.data.phone,
    }
  },
  //上一步
  prevStep(e) {
    const index = e.detail.index;
    console.log("active", this.data.active)
    this.setData({
      active: this.data.active - 1
    });
  },
  // 提交
  async onshow() {
    await this.subCamp()
  },
  async subCamp() {
    let userInfo = wx.getStorageSync("userInfo")
    // 营地类型
    let selectedCampType = this.data.selectedCampType;
    let campTypeValue = '';
    if (selectedCampType === "综合营地") {
      campTypeValue = "1";
    } else if (selectedCampType === "微型营地") {
      campTypeValue = "2";
    } else if (selectedCampType === "帐篷营地") {
      campTypeValue = "3";
    } else if (selectedCampType === "教育营地") {
      campTypeValue = "4";
    } else {
      campTypeValue = "5";
    }
    // 确保campType有值
    if (!campTypeValue) {
      campTypeValue = '1'; // 设置一个默认值，例如 'defaultCampType'
    }
    campTypeValue = Number(campTypeValue);
    this.setData({ campType: campTypeValue });
    console.log(this.data, "this.data")

    // 营业时间
    let timetype = this.data.selecttimeType;
    let _selecttimeType = this.data.selecttimeType;
    console.log("timeTypelx", timetype)
    let selecttime = '';
    if (timetype === "全年") {
      selecttime = "1";
      _selecttimeType = "全年";
    } else {
      selecttime = "2";
    } if (!selecttime) {
      selecttime = '1'; // 设置一个默认值，例如 'defaultCampType'
    }
    selecttime = Number(selecttime);
    this.setData({
      // campTypes:campTypeValue,
      timeType: selecttime,
      specificTime: _selecttimeType,
    }, () => {
      console.log(this.data.timeType, "timeType");
      console.log(this.data.specificTime, "specificTime");

    })
    // this.setData({ timeType: selecttime });
    // console.log(this.data.timeType, "timeType");
    console.log(this.data, "this.data")
    let data = {
      userId: userInfo.userId,
      campName: this.data.campName,
      longitude: this.data.longitude,
      latitude: this.data.latitude,
      location: this.data.location,
      address: this.data.address,
      linkman: this.data.linkman,
      phone: this.data.phone,
      timeType: Number(this.data.timeType),
      specificTime: _selecttimeType,
      // imageUrl: this.data.imageUrl,
      imageUrl: this.data.imageUrls.join(","),
      introduce: this.data.introduce,
      campType: Number(this.data.campType),
      userType: 1,
      campUser: {
        userId: userInfo.userId
      }
    }
    http.addcamp(data).then(res => {
      console.log(res);
      if (res.code === 200) {
        wx.showToast({
          title: '提交成功',
          icon: 'success',
          duration: 1000
        })
        wx.navigateBack({
          delta: 1
        })
        this.setData({ campId: res.msg });
        this.subService()
      }
    })

  },
  async subService() {
    let res = await http.addService({
      campId: this.data.campId,
      facilityIds: this.data.selectFacilitiesList // 发送CampFacility对象数组
    });
    console.log(res)
    if (res.code == 200) {
      wx.redirectTo({
        url: `/pages/campDetail/campDetail?campId=${this.data.campId}`,
      })
    }

  },

  // 营地位置
  selectSite() {
    wx.getSetting({
      success: res => {
        if (!res.authSetting['scope.userLocation']) {
          this.requestLocationAuthorization();
        } else {
          this.getUserLocation();
        }
      }
    })
  },
  // 获取位置信息
  getUserLocation() {
    wx.getLocation({
      type: 'gcj02',
      success: (res) => {
        console.log(res, "返回的数据")
        this.setData({
          // location:res.address,
          latitude: res.latitude,
          longitude: res.longitude,
        });
        wx.chooseLocation({
          // location:this.data.address,
          longitude: this.data.longitude,
          latitude: this.data.latitude,
          success: (res) => {
            console.log(res, '#######');
            console.log(this.data, '#######');
            this.setData({
              latitude: res.latitude,
              longitude: res.longitude,
              campLocation: res.address,
              location: res.name,
              address: res.address,
            });
            console.log(this.data, '#######');
          },
          fail: err => {
            console.log(err)
          }
        })
      },
      fail: (err) => {
        console.log('获取位置失败：', err);
      },
      complete: () => {
        console.log('位置获取操作已完成')
      }

    })
  },
  // 请求授权
  requestLocationAuthorization() {
    wx.authorize({
      scope: 'scope.userLocation',
      success: () => {
        this.getUserLocation();
      },
      fail: (err) => {
        this.showSettingPrompt()
      }
    })
  },
  // 提示用户收到开启
  showSettingPrompt() {
    wx.showModal({
      title: '需要位置权限',
      content: '请在设置中开启位置权限以正常使用本功能。',
      showCancel: false,
      confirmText: '去设置',
      success: (res) => {
        if (res.confirm) {
          wx.openSetting({
            success: (settingRes) => {
              if (settingRes.authSetting['scope.userLocation']) {
                this.getUserLocation();
              } else {
                console.log('用户仍未开启位置权限');

              }
            },
          });
        }
      },
      complete: (res) => {
        if (res.cancel) {
        }
        if (res.confirm) {
        }
      }
    })
  },


  onLoad() {
    this.getAllfacilityList()
  },
  //营业时间
  showtime() {
    this.setData({ showPopup: true });
  },
   // 关闭弹出层
  closePopup: function () {
    this.setData({
      showPopup: false
    });
  },
  // 单选按钮变化事件处理函数
  onOptionChange: function (e) {
    const value = e.detail.value;
    console.log('选择的时间类型：', value);
    if (value === 'month') {
      this.setData({
        showPicker: true,
        showbutton:false,
        // selectedValues:[0,11],
        timeType: '月份',// 更新van-field的值
        selecttimeType: '月份'
      });
    } else {
      this.setData({
        showPicker: false,
        showbutton: true,
        timeType: '全年',// 更新van-field的值
        selecttimeType: '全年'
      });
    }
    let t = this.data.timeType;
    console.log("timeType1", t)
  },

  onConfirmm(event) {
    const { picker, value, index } = event.detail;
    const selectedMonth1 = value[0]; // 第一列选择的值，即第一个月份
    const selectedMonth2 = value[1]; // 第二列选择的值，即第二个月份

    // 打印这两个值
    console.log('选择的第一个月份：', selectedMonth1);
    console.log('选择的第二个月份：', selectedMonth2);

    // 更新界面显示的营业时间类型
    this.setData({
      timeType: `${selectedMonth1} — ${selectedMonth2}`, // 假设你想要显示为“月份 - 月份”的格式
      selecttimeType: `${selectedMonth1} — ${selectedMonth2}`, // 假设你想要显示为“月份 - 月份”的格式
      showPopup: false // 关闭弹出层
    });
    let t2 = this.data.timeType;
    console.log("timeType2", t2)
    console.log('选择的时间：', value);

  },

  // 选择器取消事件处理函数
  onCancell() {
    this.setData({ 
      showPopup: false,
      timeType:''
     });
  },
  onCancellb(){
    this.setData({ 
      showPopup: false,
      timeType:''
     });
  },
  onConfirmmb(){
    let t = this.data.timeType;
    this.setData({ 
      showPopup: false,
      timeType:t
     });
  },



  //上传
  afterRead(event) {
    // event.detail 是一个数组，包含了所有已选择的文件信息
    // const files = event.detail;
    const { file } = event.detail
    console.log("file", file)

    this.uploadFile(file.tempFilePath, file);
    // files.forEach(file => {
    //   // 对每个文件执行上传操作
    // });
  },
  uploadFile(filePath, file) {
    // const { tempFilePath } = file; // 获取文件的临时路径
    var self = this
    let userInfo = wx.getStorageSync("userInfo")
    wx.uploadFile({
      url: 'http://127.0.0.1:8080/common/upload', // 后端接口地址
      filePath: filePath,
      header: {
        'content-type': 'application/json',
        "Authorization": `Bearer ${userInfo.token}`
      },
      name: 'file', // 后端通过这个key可以获取到上传的文件
      formData: {
        'user': 'test' // 可以添加其他需要的字段
      },
      success: function (res) {
        // 上传成功的处理逻辑
        console.log('上传成功', res);
        const { imageUrl = [] } = self.data;
        const { imageUrls = [] } = self.data;
        var _data = JSON.parse(res.data)
        imageUrl.push({ ...file, url: res.data });
        imageUrls.push(_data.fileName)
        self.setData({ imageUrl });
        self.setData({ imageUrls });

      },
      fail: function (error) {
        // 上传失败的处理逻辑
        console.error('上传失败', error);
      }
    });
  },
  //文本
  onInput(event) {
    this.setData({
      introduce: event.detail.value
    });
  },



  //营地类型
  showppicker() {
    this.setData({ showlx: true });
  },
  
  // 弹出层关闭事件
  onCloseee() {
    this.setData({ showlx: false });
  },
  // 单选按钮点击事件
  onClick: function (e) {
    const index = e.currentTarget.dataset.name;
    const item = this.data.campTypes[index];
    this.setData({
      selectedCampType: item,
    });
  },
   // 重置按钮点击事件
  onCancelll() {
    this.setData({ 
      selectedCampType:'',
      campType:'',
      showlx: false
   });
  },
  // 单选类型改变事件
  onCampTypeChange(e) {
    this.setData({
      selectedCampType: e.detail.value
    });
  },
  // 完成按钮点击事件
  onConfirmmm() {
    this.setData({ showlx: false });
    this.setData({ campType: this.data.selectedCampType })
  },

  //服务设施
  getAllfacilityList() {
    // var query = query
    http.facilityList().then((res) => {
      console.log(res, "res")
      if (res.data && res.code === 200) {
        this.setData({
          facilitiesList: res.data
        });
      } else {
        console.error('获取设施列表失败', res.data);
      }
    })
  },
  // 选中服务设施
  selectIocn(e) {
    let a, b, select, list, id, data
    list = this.data.facilitiesList
    id = e.currentTarget.dataset.id
    data = this.data.selectFacilitiesList
    for (let i = 0; i < list.length; i++) {
      for (let j = 0; j < list[i].facilities.length; j++) {
        if (id == list[i].facilities[j].facilityId) {
          a = i
          b = j
        }
      }
    }
    select = list[a].facilities[b].state
    // 如果没有选中，则选中
    if (select == 1) {
      list[a].facilities[b].state = 2
      data.push(id)
      this.setData({
        facilitiesList: list,
        selectFacilitiesList: data
      })
    } else {
      // 已经选中，则取消选中
      list[a].facilities[b].state = 1
      let index = data.indexOf(id)
      data.splice(index, 1)
      this.setData({
        facilitiesList: list,
        selectFacilitiesList: data
      })
    }

    console.log(this.data.selectFacilitiesList);
  },













  // 其他页面逻辑
})








// Page({

//   /**
//    * 页面的初始数据
//    */
//   data: {

//   },

//   /**
//    * 生命周期函数--监听页面加载
//    */
//   onLoad(options) {

//   },

//   /**
//    * 生命周期函数--监听页面初次渲染完成
//    */
//   onReady() {

//   },

//   /**
//    * 生命周期函数--监听页面显示
//    */
//   onShow() {

//   },

//   /**
//    * 生命周期函数--监听页面隐藏
//    */
//   onHide() {

//   },

//   /**
//    * 生命周期函数--监听页面卸载
//    */
//   onUnload() {

//   },

//   /**
//    * 页面相关事件处理函数--监听用户下拉动作
//    */
//   onPullDownRefresh() {

//   },

//   /**
//    * 页面上拉触底事件的处理函数
//    */
//   onReachBottom() {

//   },

//   /**
//    * 用户点击右上角分享
//    */
//   onShareAppMessage() {

//   }
// })